// package com.wyx.rtddels.config;
//
// import lombok.Data;
// import org.springframework.beans.factory.annotation.Value;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import org.springframework.scheduling.annotation.EnableAsync;
// import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
//
// import java.util.concurrent.ThreadPoolExecutor;
//
// /**
//  * @author WYX
//  * @date 2024/11/11
//  * @Description  线程池配置
//  */
// @Configuration
// @EnableAsync
// @Data
// public class ExecutorConfig {
//     @Value("${thread.core_pool_size}")
//     private int corePoolSize;
//
//     @Value("${async.executor.thread.max_pool_size}")
//     private int maxPoolSize;
//
//     @Value("${async.executor.thread.queue_capacity}")
//     private int queueCapacity;
//
//     @Value("${async.executor.thread.name.prefix}")
//     private String namePrefix;
//
//     @Bean(name = "asyncServiceExecutor")
//     public ThreadPoolTaskExecutor asyncServiceExecutor(){
//         ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
//         threadPoolTaskExecutor.setCorePoolSize(corePoolSize);
//         threadPoolTaskExecutor.setMaxPoolSize(maxPoolSize);
//         threadPoolTaskExecutor.setQueueCapacity(queueCapacity);
//         threadPoolTaskExecutor.setKeepAliveSeconds(3);
//         threadPoolTaskExecutor.setThreadNamePrefix(namePrefix);
//         // rejection-policy：当pool已经达到max size的时候，如何处理新任务
//         // CALLER_RUNS：不在新线程中执行任务，而是由调用者所在的线程来执行
//         threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
//         //加载
//         threadPoolTaskExecutor.initialize();
//         return threadPoolTaskExecutor;
//     }
//
//     public static void main(String[] args) {
//         ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
//         threadPoolTaskExecutor.submit(new Runnable() {
//             @Override
//             public void run() {
//                 System.out.println(Thread.currentThread().getName());
//             }
//         });
//     }
// }
